package com.poizon.infrastructure.idem.core.domain.value.enums;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;

/**
 * 枚举/幂等底层存储实现
 */
@AllArgsConstructor
@Getter
@Slf4j
public enum IdemDbStoreType {
    redis("redisIdemDbStoreRepo", 2),
    mongodb("mongodbIIdemDbStoreRepo", 1)
    ;

    private String dbStoreType;
    /**
     * 优先级
     */
    private Integer priority;

    public static Boolean isExist(String dbStoreType) {
        for (IdemDbStoreType idemDbStoreType : IdemDbStoreType.values()) {
            if (idemDbStoreType.getDbStoreType().equals(dbStoreType)) {
                return true;
            }
        }
        log.error("[通用幂等框架] 不存在的幂等DB存储类型:{}", dbStoreType);
        return false;
    }

    public static IdemDbStoreType getDbStoreType(String dbStoreType) {
        for (IdemDbStoreType idemDbStoreType : IdemDbStoreType.values()) {
            if (idemDbStoreType.getDbStoreType().equals(dbStoreType)) {
                return idemDbStoreType;
            }
        }
        log.error("[通用幂等框架] 不存在的幂等DB存储类型:{}", dbStoreType);
        return null;
    }
}